package geometria;

import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Rectangle2D;

public class Rectangulo{

	// private java.awt.geom.Rectangle2D rectangulo;
	private Shape rectangulo;
	private Coordenada centro;
	
	// X e Y son las coordenadas de la punta superior izquierda del rect�ngulo.
	
	public Rectangulo(Double x, Double y, Double ancho, Double largo) {
		this.rectangulo = (Shape)new Rectangle2D.Double(x, y, ancho, largo);
		this.centro = new Coordenada(x + ancho/2, y + largo/2);
	}

	/*public void marcoNuevo(Double x, Double y, Double ancho, Double largo) {
		this.rectangulo.setFrame(x, y, ancho, largo);
	}*/

	public boolean intersecta(Rectangulo otro) {
		//Rectangle2D.Double raux=(Rectangle2D.Double) this.rectangulo;
		//return raux.intersects((Rectangle2D.Double)otro.rectangulo);
		Area a1 = new Area(this.rectangulo);
		Area a2 = new Area(otro.rectangulo);
		a1.intersect(a2);
		return !a1.isEmpty();
	}

	public boolean contiene(Coordenada c) {
		return this.rectangulo.contains(c.getX(), c.getY());
	}

	public Coordenada getCoordenadaCentral() {
		
		return this.centro;
//		//Rectangle2D.Double raux=(Rectangle2D.Double) this.rectangulo;
//		Rectangle2D raux= this.rectangulo.getBounds2D();
//		
//		return new Coordenada(raux.getCenterX(), raux.getCenterY());
	}

	public void rotar(Double rotacion) {
	//Coordenada centro = this.getCoordenadaCentral();
	 AffineTransform transform = AffineTransform.getRotateInstance(rotacion, centro.getX(), centro.getY());
	 this.rectangulo = transform.createTransformedShape(this.rectangulo);
		

	}
}


